// One spring - version 1.2

// このスクリプトは、ポップアップメニューに表示される２つのレイヤー間をスプリングで結び付けます。
// レイヤー１は元のモーションを保持し、レイヤー２がスプリングでレイヤー１に結び付けられます。

//      レイヤー                                            プロパティ               チャンネル
//      ------                                              ----------               --------
// 1: 移動するレイヤー										使用しない               使用しない
// 2: スプリングで１番目のレイヤーと結び付けられるレイヤー  使用しない               使用しない


if (time() == start_time) {
   rest_length = 10;							// 力を加えていないときのスプリングの長さ（ピクセル単位）
   damp = 0.95;										// 減衰力（０＝摩擦力無限大、１＝摩擦力なし）

   p1 = value(pop_layer(1), position);
   p2 = value(pop_layer(2), position);

   last_p1 = tmap(time() - step_time, value(pop_layer(1), position));
   last_p2 = tmap(time() - step_time, value(pop_layer(2), position)); 

   v1 = (p1 - last_p1);
   v2 = (p2 - last_p2);
} else {
  p1 = value(pop_layer(1), position);

   delta = p2 - p1;
   n_delta = normalize(delta);

   a = 2 * n_delta * (length(delta) - rest_length) * step_time;

	v2 = (v2 - a) * damp;
  v1 = (v1 + a) * damp;

   p1 = p1 + v1;
   p2 = p2 + v2;
}
value(pop_layer(2), position) = p2;